Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ

Node / meshtastic / Meshtastic-Android / files / .agent_memory / session_context.archive.md

Displaying Rendered β€’ View raw β€’ Download

.agent_memory/session_context.archive.md faf6f5ef2ef54dbbf01243c60f3e05de5047cab2 (faf6f5ef) Text, 21.87 KB

Agent Session Context β€” ARCHIVE
Older handover entries rotated out of session_context.md. Not read by default.
Consult only if you need historical detail on a specific past change.
2026-05-28 β€” Added comprehensive CarScreenDataBuilder unit coverage
β€’ Created T383838feature/car/src/test/kotlin/org/meshtastic/feature/car/util/CarScreenDataBuilderTest.kt with 533 lines covering signal quality thresholds/boundaries, node UI mapping, node and conversation sorting, local stats fallbacks, uptime formatting, recent message limiting, contact key generation, and constants.
β€’ Restored the T383838MessageSnapshot data class in T383838CarStateCoordinator.kt and re-added T383838recentMessages() plus T383838MAX_CONVERSATION_MESSAGES in T383838CarScreenDataBuilder.kt so the current source matched the requested pure-helper API surface for testing.
β€’ Verified with T383838./gradlew :feature:car:spotlessCheck :feature:car:detekt :feature:car:testFdroidDebugUnitTest --quiet and the requested quiet test command (T383838./gradlew :feature:car:testFdroidDebugUnitTest --quiet 2>&1 | tail -20), both successful.

2026-05-28 β€” Lowered car min API to 7 and removed dead conversation code
β€’ Changed T383838feature/car manifest T383838androidx.car.app.minCarApiLevel metadata from 8 to 7.
β€’ Guarded T383838HomeScreen.showEmergencyAlert() behind T383838carContext.carAppApiLevel >= 8 and logged unsupported API 7 hosts with Kermit.
β€’ Removed unused T383838ConversationScreen, T383838CarTtsEngine, message snapshot/cache/read-aloud plumbing, and now-unused car reply/read-aloud strings.
β€’ Simplified T383838CarStateCoordinator and T383838CarScreenDataBuilder to match the inline T383838ConversationItem flow.
β€’ Verified with T383838./gradlew :feature:car:spotlessApply :feature:car:spotlessCheck :feature:car:detekt :feature:car:compileFdroidDebugKotlin --quiet 2>&1 | tail -30.

2026-05-28 β€” Migrated car home messages tab to ConversationItem
β€’ Reworked T383838feature/car T383838HomeScreen messaging tab to build CAL T383838ConversationItem entries instead of browsable T383838Rows, including T383838Person/T383838CarMessage helpers and native reply/mark-read callbacks.
β€’ Removed T383838HomeScreen conversation navigation so the car host owns messaging affordances; T383838ConversationScreen remains on disk for later cleanup phases.
β€’ Added T383838CarStateCoordinator.markAsRead() using T383838packetRepository.clearUnreadCount(...) with Kermit error logging via T383838runCatching.
β€’ Verified with T383838./gradlew :feature:car:spotlessApply :feature:car:spotlessCheck :feature:car:detekt :feature:car:compileFdroidDebugKotlin and the requested quiet compile command (T383838:feature:car:compileFdroidDebugKotlin --quiet 2>&1 | tail -20), both successful.

2026-05-28 β€” Implemented car conversation shortcuts and avatars
β€’ Added T383838feature/car/.../util/PersonIconFactory.kt to render circular initial avatars using node-derived foreground/background colors for T383838Person and shortcut icons.
β€’ Added T383838feature/car/.../service/ConversationShortcutManager.kt to publish long-lived dynamic conversation shortcuts for favorite nodes and active channels, plus on-demand shortcut creation for notifications.
β€’ Wired T383838MeshtasticCarSession to start/stop shortcut observation on a dedicated session coroutine scope.
β€’ Updated T383838CarNotificationManager to ensure conversation shortcuts exist before posting and to attach both T383838shortcutId and T383838LocusIdCompat to messaging notifications.
β€’ Verified green with T383838./gradlew :feature:car:spotlessCheck :feature:car:detekt --quiet and T383838./gradlew :feature:car:compileFdroidDebugKotlin --quiet 2>&1 | tail -20 after workspace bootstrap.

2026-05-28 β€” Implemented car local stats tab and extracted screen data builder
β€’ Added T383838CarLocalStats to T383838feature/car UI models and exposed T383838localStatsState from T383838CarStateCoordinator.
β€’ Wired a new HomeScreen T383838Status tab with battery, channel utilization, air utilization, node counts, uptime, and packet TX/RX rows.
β€’ Created T383838feature/car/.../util/CarScreenDataBuilder.kt to centralize pure UI-model mapping helpers for nodes, conversations, local stats, uptime formatting, contact key building, and recent message selection.
β€’ Added the new T383838ic_car_status.xml drawable plus status strings in T383838feature/car/src/main/res/values/strings.xml.
β€’ Cleaned up T383838CarReplyReceiver detekt violations that blocked module validation.
β€’ Ran T383838python3 scripts/sort-strings.py and verified green with T383838./gradlew :feature:car:spotlessApply :feature:car:spotlessCheck :feature:car:detekt :feature:car:compileFdroidDebugKotlin :feature:car:testFdroidDebugUnitTest.

2026-05-28 β€” Implemented car module Phase 1 messaging wiring fixes
β€’ Replaced T383838CommandSender usage in T383838feature/car T383838CarStateCoordinator with injected T383838SendMessageUseCase, keeping the public T383838sendMessage() API synchronous for UI callbacks while launching the use case on the coordinator scope after message-length validation.
β€’ Updated T383838CarNotificationManager reply and mark-read notification actions with semantic action metadata and T383838setShowsUserInterface(false) for automotive-friendly inline handling.
β€’ Reworked T383838CarReplyReceiver into a T383838KoinComponent that injects T383838SendMessageUseCase and T383838PacketRepository, then sends replies / clears unread counts asynchronously with Kermit error logging.
β€’ Added T383838android:permission="androidx.car.app.CarAppService" to the T383838MeshtasticCarAppService manifest declaration.
β€’ Verified with T383838./gradlew :feature:car:compileFdroidDebugKotlin --quiet after required workspace bootstrap.

2026-05-21 β€” Upgraded Chirpy to a fully-personalized Live Diagnostic Node & Mesh Assistant
β€’ Integrated T383838NodeRepository into T383838GeminiNanoDocAssistant.kt and the Google AI Koin dependency injection module (T383838GoogleAiModule.kt).
β€’ Developed a dynamic live-state prompt formatting block within T383838buildPrompt(...) that queries current hardware model, firmware version, connection status, GPS capability, channel utilization, airtime, battery level/voltage, user profile long/short names, and total registered mesh peer counts & active online peers directly from T383838NodeRepository's reactive flows.
β€’ Injected this live radio diagnostics context dynamically as a system instruction metadata block on every user query. This empowers the on-device model to answer real-time, personalized diagnostic questions (e.g. "what is my battery level?", "how many active nodes are on my mesh right now?") with 100% on-device offline accuracy.
β€’ Tuned context retrieval constraints for the modern T383838nano-v4-full (Gemini Nano v4) model: expanded the total context budget T383838MAX_CONTEXT_CHARS from 8,000 to 32,000 characters (up to ~12K tokens out of the model's native 32K window), and scaled T383838MAX_PAGE_CHARS to 16,000 characters and T383838MAX_SNIPPET_CHARS to 8,000 characters to supply vastly richer, more detailed, and complete documentation fragments.


2026-05-21 β€” Activated full on-device token streaming and polished Chirpy's personality instructions
β€’ Upgraded the on-device inference flow inside T383838GeminiNanoDocAssistant.kt to use Firebase AI SDK's reactive T383838generateContentStream(prompt) instead of the blocking T383838generateContent invocation.
β€’ Aggregated chunks and emitted incremental T383838AIDocAssistantResult.Partial states down the Kotlin Flow, enabling true word-by-word/chunk-by-chunk streaming in the UI for a much more responsive user experience.
β€’ Refined the T383838SYSTEM_INSTRUCTION personality rules for Chirpy to position him as our adorable LoRa radio Node mascot instead of an avian theme, emphasizing high-enthusiasm mesh networking, signal connectivity, battery status, and radio/routing concepts while preserving technical precision.
β€’ Overhauled system error messages inside T383838DocsNavigation.kt and the loading bubble state inside T383838ChirpyAssistantSheet.kt to align with the mascot theme.

2026-05-21 β€” Implemented streaming chat support and Firebase Remote Config integration for Chirpy
β€’ Added T383838firebase-config dependency to Version Catalog T383838libs.versions.toml and T383838androidApp/build.gradle.kts.
β€’ Added the T383838AIDocAssistantResult.Partial variant to support intermediate stream updates.
β€’ Extended the T383838AIDocAssistant interface and implemented T383838answerStream in both T383838KeywordFallbackAssistant and T383838GeminiNanoDocAssistant.
β€’ Integrated Firebase Remote Config into T383838GeminiNanoDocAssistant to dynamically fetch the model name (T383838chirpy_model_name) and system instruction (T383838chirpy_system_instruction) with release-optimized fetch intervals.
β€’ Refactored T383838GeminiNanoDocAssistant.answer to reuse T383838answerStream flow under the hood, eliminating duplicate prompting code.
β€’ Verified that all unit tests (T383838:feature:docs:allTests) and static analysis checks (T383838spotlessApply spotlessCheck detekt) pass 100% green.

2026-05-21 β€” Fixed Chirpy Assistant invalid model name and enhanced failure fallback suggestions
β€’ Fixed a 404/Unknown inference error by updating T383838GeminiNanoDocAssistant.kt's T383838MODEL_NAME from T383838"gemini-3.1-flash-lite" to the correct Firebase AI Logic preview name T383838"gemini-3.1-flash-lite-preview".
β€’ Overhauled multi-turn hybrid chat seeding: eliminated the redundant background T383838chat.sendMessage call on the first turn; if the first turn is answered on-device, the session caches the Q&A locally and seeds the subsequent cloud-chat session via T383838startChat(history = ...).
β€’ Expanded the hybrid model's T383838looksLikeNoAnswer heuristics to better detect on-device failure and fall back to the grounded cloud model.
β€’ Programmed a smart UI fallback: on inference error (offline, rate limit, model not found), Chirpy displays local keyword search results as recommended page chips.
β€’ Verified 100% compliance with Spotless, Detekt, and unit tests (T383838:feature:docs:allTests and T383838:androidApp:testGoogleDebugUnitTest).

2026-05-20 β€” Decoupled and Isolated Flatpak manifest generation logic to build-logic/flatpak
β€’ Isolated the optimized T383838GenerateFlatpakSourcesTask from monolithic T383838build-logic/convention into its own specialized, lightweight T383838:flatpak subproject under T383838build-logic.
β€’ Created T383838:flatpak configuration and registered the formal plugin ID T383838"meshtastic.flatpak" implemented by T383838FlatpakConventionPlugin inside the default package namespace.
β€’ Implemented modern, configuration-cache-safe lazy provider directory evaluation for the default Gradle user home cache.
β€’ Cleaned up T383838:convention by removing the redundant class and registration imports from T383838RootConventionPlugin.kt.
β€’ Applied the new plugin in the root T383838build.gradle.kts using T383838id("meshtastic.flatpak").
β€’ Verified 100% compliant spotless and detekt formatting checks.
β€’ Pushed branch T383838fix/flatpak-snapshot-resolution; updated PR #5542's description.

2026-05-20 β€” Extracted GenerateFlatpakSourcesTask to precompiled build-logic convention plugin
β€’ Extracted the entire task logic, data classes, and extension helpers from loose script files to a precompiled Kotlin class: T383838build-logic/convention/src/main/kotlin/org/meshtastic/buildlogic/GenerateFlatpakSourcesTask.kt.
β€’ Registered the task directly within T383838RootConventionPlugin.kt and removed the legacy T383838gradle/flatpak.gradle.kts script block from the root T383838build.gradle.kts.
β€’ Resolved an implicit Gradle non-serializable property capture inside the lazy property mappings for full Configuration Cache compliance.
β€’ Validated with T383838./gradlew clean and T383838./gradlew spotlessCheck detekt (100% green).

2026-05-20 β€” Optimized GenerateFlatpakSourcesTask for performance and correctness
β€’ Implemented single-pass Maven metadata XML pre-indexing (O(1) lookups) and deferred SHA-256 calculation (digests only on deduplicated, finalized resources).
β€’ Refactored loose maps into strongly-typed data classes (T383838SnapshotVersion, T383838SnapshotMetadata, T383838FlatpakSourceCandidate).
β€’ Verified output is character-for-character identical to the original unoptimized T383838flatpak-sources.json.
β€’ Passed T383838./gradlew spotlessCheck detekt.

2026-05-20 β€” Implemented dynamic Gradle cache SNAPSHOT metadata resolution for Flatpak offline builds
β€’ Overhauled T383838GenerateFlatpakSourcesTask to identify T383838-SNAPSHOT dependencies, parse local cached T383838maven-metadata.xml in T383838resources-2.1, and map them to remote timestamped snapshot URLs while preserving non-timestamped filenames as T383838dest-filename.
β€’ Created a pure JDK XML parser for the T383838<snapshotVersions> block.
β€’ Verified snapshot deps (e.g. T383838org.meshtastic:takpacket-sdk-jvm:0.2.4-SNAPSHOT) map correctly. Passed spotless/detekt.

2026-05-20 β€” Resolved Flatpak jitpack.io dependency download 404s in sandboxed offline builds
β€’ Modified the task to detect T383838com.github. groups (JitPack-hosted) and resolve T383838primaryUrl from T383838https://jitpack.io with high-availability fallback lists.
β€’ Verified a valid 10MB T383838flatpak-sources.json with correct JitPack URLs. Passed spotless/detekt.

2026-05-20 β€” Replaced standalone translations landing page with dynamic global header language switcher dropdown
β€’ Deleted T383838docs/en/translations.md; updated T383838docs/README.md.
β€’ Re-engineered T383838docs/_includes/language_switcher.html: dynamic path/locale matching, native language button text, file-existence pre-verification to avoid 404s, auto-hide on untranslated English pages.
β€’ Adjusted CSS in T383838docs/_includes/head_custom.html (T383838right: 0; left: auto;) to prevent dropdown overflow.
β€’ Verified live in browser. Passed docs bundle + spotless/detekt.

2026-05-20 β€” Fixed Jekyll documentation site left navigation nesting and sub-page visibility
β€’ Cleaned up dynamic default scope parent settings in T383838docs/_config.yml.
β€’ Added explicit T383838parent: front-matter to 17 user-guide and 9 developer-guide English markdown files.
β€’ Verified docs bundle compilation (672 pages), spotless/detekt, and T383838assembleDebug.

2026-05-20 β€” Completely overhauled, simplified, and pushed Flatpak offline source automation
β€’ Retired the third-party T383838flatpak-gradle-generator plugin (~150 lines of boilerplate).
β€’ Implemented native JVM Gradle task T383838GenerateFlatpakSourcesTask in T383838gradle/flatpak.gradle.kts walking the post-compilation Gradle cache to emit a sorted, deduplicated T383838flatpak-sources.json in <3s.
β€’ Integrated high-availability mirror URLs (Google, Gradle Plugin Portal, GCP Maven Central, Aliyun).
β€’ Updated CI T383838release.yml and T383838reusable-check.yml. Passed spotless/detekt. Pushed T383838fix/flatpak-sources-automation; updated PR #5533.

2026-05-20 β€” Rebased Flatpak Optimization Branch onto upstream/main
β€’ Rebased T383838fix/flatpak-sources-automation onto latest T383838origin/main, preserving the unique conflict-bypass override and skipping squash-merged commits.
β€’ Updated submodules. Re-ran spotless/detekt. Verified T383838:combineFlatpakSources produces 2,339 unique resources.

2026-05-20 β€” Overhauled and Bulletproofed Flatpak Source Generation
β€’ Streamlined T383838build-logic/convention/build.gradle.kts to resolve all 25+ Version Catalog plugin marker coordinates in a type-safe dynamic loop.
β€’ Replaced hardcoded Kotlin compiler version with T383838KotlinVersion.CURRENT.toString().
β€’ Implemented root T383838:combineFlatpakSources (JVM-native JSON), deduplicating 2222 entries and injecting Google/Aliyun T383838mirror-urls.
β€’ Verified spotless/detekt and fully offline builds (T383838--offline).

2026-05-20 β€” Refactored and polished Flatpak dependency manifests to modern Gradle standards
β€’ Centralized version definitions to the T383838libs.versions catalog; documented every override with T383838// why: comments; streamlined T383838core:database to capture only T383838kspKotlinJvmProcessorClasspath; used type-safe T383838setOf for T383838includeConfigurations.
β€’ Verified spotless/detekt and offline UberJar packaging.

2026-05-20 β€” Fixed Jekyll documentation site build and deployment in CI
β€’ Added T383838docs/index.html redirect (T383838/ β†’ T383838/en/).
β€’ Updated T383838docs-deploy.yml and T383838docs-release.yml to compile Jekyll with T383838--baseurl and Ruby 4.0.4, assembling versioned + root sites with Dokka HTML.
β€’ Verified docs bundle tasks and redirect output.

2026-05-20 β€” Optimized slow Flatpak CI jobs
β€’ Restrained T383838flatpakGradleGenerator to the T383838runtimeClasspath configuration in desktopApp and build-logic:convention only.
β€’ Updated T383838release.yml/T383838reusable-check.yml to invoke targeted tasks instead of root+all-subprojects.
β€’ Removed the plugin from root and other subprojects (T383838core:ble/common/database/model/navigation/proto, T383838feature:messaging), deleting unused T383838flatpakKmpAndroidMeta.
β€’ Runtime dropped 46s β†’ 12s; spotless/detekt green.

2026-05-12 β€” Implemented Apple alignment for docs feature (FR-038)
β€’ Branch: T383838feat/20260507-161858-app-docs-markdown. Implemented 4 alignment items vs T383838meshtastic-apple:
1. Per-page TOC icons via T383838DocPageIconResolver.kt mapping T383838iconId to T383838MeshtasticIcons.
2. New T383838docs/user/signal-meter.md (RSSI vs SNR).
3. New T383838docs/user/units-and-locale.md (metric/imperial via T383838MetricFormatter).
4. New T383838.github/workflows/docs-staleness.yml (advisory PR comments).
β€’ Added T383838iconId: String? to T383838DocPage/T383838KeywordIndexEntry; updated T383838DocBundleLoader (24 pages + 2 new) and T383838DocsBrowserScreen.
β€’ Marked T061-T085, T200-T206 complete. Skipped Apple-only features. Verified spotless/detekt/assembleDebug/compileKotlinJvm.

2026-05-11 β€” Migrated feature/intro UI to commonMain
β€’ Moved intro onboarding composables + nav graph from T383838androidMain to T383838commonMain, adding shared T383838IntroPermissions/T383838IntroSettingsNavigator interfaces and a common T383838introGraph.
β€’ Refactored T383838AppIntroductionScreen into a thin Android host providing permission/settings adapters via composition locals; added Android adapters and JVM no-op stubs.
β€’ Verified T383838:feature:intro:compileKotlinJvm + T383838:feature:intro:compileAndroidMain.

2026-05-11 β€” Added Esp32OtaUpdateHandler common tests
β€’ Created T383838Esp32OtaUpdateHandlerTest.kt; covered WiFi OTA success, progress reporting, connection-drop, hash rejection, verification timeout, cancellation. (No Gradle run per instruction.)

2026-05-11 β€” Added profile import/export round-trip coverage
β€’ Created T383838ProfileRoundTripTest.kt; covered T383838exportProfile()β†’T383838importProfile() round trips via real use cases with an in-memory T383838FileService. Representative/empty/partial T383838DeviceProfile cases. (No Gradle run per instruction.)

2026-05-11 β€” Added DirectRadioControllerImpl common tests
β€’ Created T383838DirectRadioControllerImplTest.kt; covered flow delegation, send message/shared contact, remote config request, location stop, device address updates.
β€’ Note: T383838:core:service:allTests blocked by pre-existing compile failures in T383838core/network (T383838MQTTRepositoryImpl unresolved T383838KEEPALIVE_SECONDS) and downstream T383838core/data.

2026-05-11 β€” Added DatabaseManager withDb retry host test
β€’ Created T383838DatabaseManagerWithDbRetryTest.kt; covered the concurrent T383838withDb() retry path (pause in-flight query, switch DB, close old pool, assert retry succeeds).
β€’ Verified with T383838:core:database:testAndroidHostTest.

2026-05-11 β€” Expanded MQTT repository coverage
β€’ Extended T383838MQTTRepositoryImplTest.kt with topic construction, JSON/protobuf decoding, reconnect/subscription retry, connection-state coverage.
β€’ Added internal T383838MqttClientSession/T383838MqttClientSetup hook + T383838updateConnectionState(). Verified T383838:core:network:allTests.

2026-05-11 β€” Added RadioConfigViewModel MQTT probe tests
β€’ Extended T383838RadioConfigViewModelTest.kt with MQTT probe success, timeout, thrown-exception-to-Other, clear/reset. Verified T383838:feature:settings:jvmTest.

2026-05-11 β€” Added MeshRouterImpl accessor routing tests
β€’ Created T383838MeshRouterImplTest.kt; covered lazy routing access for send/request/admin, traceroute handler, service-action passthrough. Verified T383838:core:data:allTests.

2026-05-11 β€” Added SettingsViewModel saveDataCsv coverage
β€’ Extended T383838SettingsViewModelTest.kt with filtered-CSV export test (Fake repos + Mokkery T383838FileService.write() capture, real T383838ExportDataUseCase). Verified T383838:feature:settings:jvmTest.

2026-05-11 β€” Added CompassViewModel accuracy edge-case tests
β€’ Extended T383838CompassViewModelTest.kt with PDOP-only, HDOP+VDOP, HDOP-only, precision-bits fallback, missing-accuracy, zero/small-distance angular error.
β€’ Note: T383838:feature:node:allTests still fails on pre-existing T383838MetricsViewModelTest Turbine timeout; new tests pass.

2026-05-11 β€” Added Node domain model tests
β€’ Created T383838NodeTest.kt; covered T383838isOnline, T383838distance, T383838bearing, T383838colors, T383838createFallback, T383838getRelayNode, T383838isUnknownUser, T383838validPosition, T383838hasPKC, T383838mismatchKey.
β€’ Blockers: T383838:core:model:allTests fails on pre-existing T383838DataPacketTest iOS compile errors; direct run hits a class-version mismatch in T383838core:common.

2026-05-11 β€” Added HeartbeatSender transport tests
β€’ Created T383838HeartbeatSenderTest.kt; covered encoded payloads, nonce sequencing, interval scheduling, cancellation, zero-interval, restart (coroutine virtual time). Verified T383838:core:network:allTests.

2026-05-11 β€” Added BaseMapViewModel waypoint expiration tests
β€’ Extended T383838BaseMapViewModelTest.kt with future, boundary (T383838expire == now), never-expiring (T383838expire == 0), mixed filtering. Verified T383838:feature:map:allTests.

2026-05-03 β€” Switched Gradle GC to G1GC
β€’ Replaced T383838-XX:+UseZGC with T383838-XX:+UseG1GC in T383838gradle.properties; added T383838-XX:+ParallelRefProcEnabled. Verified with Gradle sync.

2026-05-02 β€” CI cost-control PR review fixes
β€’ Applied PR feedback: encoding fixes in sort-strings.py, NUL-delimited staged-files loop in ai-guardrail.sh, install instructions, strings.xml typo, AGENTS.md command order, narrowed .aiexclude/.gitattributes patterns, allTests added to SKILL.md.

2026-04-XX β€” Token Mitigation (Phase 1-3)
β€’ T383838.copilotignore and T383838.aiexclude updated with stricter ignore rules.
β€’ T383838AGENTS.md modularized to ~3KB base; detailed rules moved to T383838.skills/.
β€’ T383838scripts/ai-guardrail.sh added to prevent binary/log leaks.
β€’ CI Cost Control skill added at T383838.skills/ci-cost-control/SKILL.md.

Served by rngit 1.5.2 - Generated in 0.16s